// 版权所有2011 Go作者。版权所有。
// 此源代码的使用受BSD样式的约束
// 可以在许可证文件中找到的许可证。

/*
	Package builtin provides documentation for Go's predeclared identifiers.
	The items documented here are not actually in package builtin
	but their descriptions here allow godoc to present documentation
	for the language's special identifiers.
*/
package builtin

// bool是布尔值的集合，true和false。
type bool bool

// true和false是两个非类型化的布尔值。
const (
	true  = 0 == 0 // 非类型布尔。
	false = 0 != 0 // 非类型布尔。
)

// uint8是所有无符号8位整数的集合。
// 范围：0到255。
type uint8 uint8

// uint16是所有无符号16位整数的集合。
// 范围：0到65535。
type uint16 uint16

// uint32是所有无符号32位整数的集合。
// 范围：0到4294967295。
type uint32 uint32

// uint64是所有无符号64位整数的集合。
// 范围：0到18446744073709551615。
type uint64 uint64

// int8是所有有符号8位整数的集合。
// 范围：-128到127。
type int8 int8

// int16是所有有符号16位整数的集合。
// 范围：-32768到32767。
type int16 int16

// int32是所有有符号32位整数的集合。
// 范围：-2147483648至2147483647。
type int32 int32

// int64是所有有符号64位整数的集合。
// 范围：-9223372036854775808到9223372036854775807。
type int64 int64

// float32是所有IEEE-754 32位浮点数的集合。
type float32 float32

// float64是所有IEEE-754 64位浮点数的集合。
type float64 float64

// complex64是所有浮点数为32且实数为32的复数的集合
// 虚部。
type complex64 complex64

// complex128是所有浮点数为64且为实数的复数的集合
// 虚部。
type complex128 complex128

// string是8位字节的所有字符串的集合，通常是这样，但不是这样
// 必须表示UTF-8编码文本。字符串可能为空，但
// 不是零。字符串类型的值是不可变的。
type string string

// int是大小至少为32位的有符号整数类型。这是一个
// 但是，不同的类型，而不是int32的别名。
type int int

// uint是一种大小至少为32位的无符号整数类型。这是一个
// 但是，不同的类型，而不是uint32的别名。
type uint uint

// uintptr是一个整数类型，其大小足以容纳
// 任何指针。
type uintptr uintptr

// 字节是uint8的别名，在所有方面都与uint8等效。它是
// 按照惯例，用于区分字节值和8位无符号值
// 整数值。
type byte = uint8

// 符文是int32的别名，在所有方面都等同于int32。它是
// 按照惯例，用于区分字符值和整数值。
type rune = int32

// iota是表示非类型整数序号的预声明标识符
// a中当前常量规范的编号（通常用括号括起来）
// 常量声明。它是零索引的。
const iota = 0 // 非类型int。

// nil是一个预先声明的标识符，表示
// 指针、通道、函数、接口、映射或切片类型。
var nil Type // 类型必须是指针、通道、func、接口、映射或切片类型

// 此处的类型仅供文档使用。这是一个替身
// 对于任何Go类型，但表示任何给定函数的相同类型
// 调用。
type Type int

// 类型1仅用于文档编制。这是一个替身
// 对于任何Go类型，但表示任何给定函数的相同类型
// 调用。
type Type1 int

// IntegerType仅用于文档编制。这是一个替身
// 对于任何整数类型：int、uint、int8等。
type IntegerType int

// FloatType仅用于文档编制。这是一个替身
// 对于浮动类型：float32或float64。
type FloatType float32

// ComplexType仅用于文档编制。这是一个
// 替代复杂类型：complex64或complex128。
type ComplexType complex64

// append内置函数将元素追加到片段的末尾。如果
// 它有足够的容量，目的地被重新许可以容纳
// 新元素。否则，将分配一个新的底层数组。
// Append返回更新的切片。因此，有必要存储
// append的结果，通常在保存切片本身的变量中：
// slice=append（slice，elem1，elem2）
// 切片=附加（切片，另一个切片…）
// 作为一种特殊情况，将字符串附加到字节片是合法的，如下所示：
// slice=append（[]字节（“hello”），“world”…）
func append(slice []Type, elems ...Type) []Type

// copy内置函数将元素从源片复制到源片中
// 目标片。（作为特例，它还将从
// 源和目标可能重叠。复制
// 返回复制的元素数，该数为
// len（src）和len（dst）。
func copy(dst, src []Type) int

// delete内置函数删除具有指定键的元素
// （m[键]）从地图上。如果m为nil或没有此类元素，则删除
// 这是禁止的。
func delete(m map[Type]Type1, key Type)

// len内置函数根据v的类型返回v的长度：
// 数组：v中的元素数。
// 指向数组的指针：*v中的元素数（即使v为零）。
// 切片或映射：v中的元素数；如果v为零，len（v）为零。
// 字符串：v中的字节数。
// 通道：通道缓冲区中排队（未读）的元素数；
// 如果v为零，len（v）为零。
// 对于某些参数，例如字符串文字或简单数组表达式
// 结果可以是常数。参见Go语言规范的“长度和长度”
// 有关详细信息，请参阅“容量”部分。
func len(v Type) int

// cap内置函数根据v的类型返回v的容量：
// 数组：v中的元素数（与len（v）相同）。
// 指向数组的指针：*v中的元素数（与len（v）相同）。
// 切片：重新切片时切片可以达到的最大长度；
// 如果v为零，则cap（v）为零。
// 信道：信道缓冲容量，以元素为单位；
// 如果v为零，则cap（v）为零。
// 对于某些参数，例如简单数组表达式，结果可以是
// 常数有关详细信息，请参阅Go语言规范的“长度和容量”部分
// 细节。
func cap(v Type) int

// make内置函数分配并初始化类型为的对象
// 切片、贴图或chan（仅限）。与new一样，第一个参数是类型，而不是
// 价值与new不同，make的返回类型与它的
// 参数，而不是指向它的指针。结果的规格取决于
// 类型：
// 切片：大小指定长度。切片的容量为
// 等于它的长度。第二个整数参数可以提供给
// 指定不同的容量；它必须不小于
// 长例如，make（[]int，0，10）分配一个底层数组
// 大小为10，并返回长度为0、容量为10的片，即
// 由这个底层数组支持。
// 映射：一个空映射被分配有足够的空间来容纳
// 指定的元素数。在这种情况下，可以省略尺寸
// 分配一个小的起始大小。
// 通道：通道的缓冲区用指定的
// 缓冲容量。如果为零，或省略了大小，则通道为
// 无缓冲。
func make(t Type, size ...IntegerType) Type

// 新的内置函数分配内存。第一个参数是类型，
// 不是值，返回的值是指向新
// 已分配该类型的零值。
func new(Type) *Type

// 复杂内置函数从两个变量构造复杂值
// 浮点值。实部和虚部必须相同
// 大小，float32或float64（或可分配给它们），以及返回值
// 值将是相应的复杂类型（对于float32，complex64，
// 浮点64的复数128）。
func complex(r, i FloatType) ComplexType

// 实数内置函数返回复数c的实数部分。
// 返回值将是与c类型对应的浮点类型。
func real(c ComplexType) FloatType

// imag内置函数返回复数的虚部
// 数字c。返回值将是对应于的浮点类型
// c。
func imag(c ComplexType) FloatType

// 关闭内置函数关闭通道，该通道必须为
// 双向或仅发送。只能由发送方执行，
// 永远不要关闭接收器，并具有关闭后通道的效果
// 接收最后发送的值。在收到最后一个值之后
// 从封闭通道c，任何来自c的接收都将成功，无需
// 阻塞，返回通道元素的零值。形式
// x、 确定：=<-c
// 对于闭合通道，也将ok设置为false。
func close(c chan<- Type)

// panic内置函数停止当前命令的正常执行
// 戈鲁廷。当函数F调用panic时，F的正常执行停止
// 立即任何被F延迟执行的函数都将在中运行
// 通常的方法，然后F返回给它的调用者。对于调用方G，调用
// 然后调用F的行为就像调用panic，终止G
// 执行和运行任何延迟的函数。这种情况一直持续到最后
// 正在执行的goroutine中的函数已按相反顺序停止。在
// 此时，程序将以非零退出代码终止。这
// 终止序列称为恐慌，可以由
// 内置函数恢复。
func panic(v interface{})

// 恢复内置功能允许程序管理服务器的行为
// 惊慌失措的戈罗廷。执行调用以在延迟
// 函数（但不是它调用的任何函数）停止恐慌序列
// 通过恢复正常执行并检索传递给
// 恐慌的召唤。如果在deferred函数之外调用recover，它将
// 不能阻止一个恐慌的序列。在这种情况下，或者当goroutine不是
// 恐慌，或者如果提供给恐慌的参数为零，则恢复返回
// 无因此，recover的返回值报告goroutine是否为
// 惊慌失措。
func recover() interface{}

// print内置函数以
// 实现特定的方法，并将结果写入标准错误。
// 打印对于引导和调试很有用；这不是保证
// 留在语言中。
func print(args ...Type)

// println内置函数在
// 实现特定的方法，并将结果写入标准错误。
// 始终在参数之间添加空格，并追加换行符。
// Println用于引导和调试；这不是保证
// 留在语言中。
func println(args ...Type)

// 错误内置接口类型是的常规接口
// 表示错误条件，nil值表示无错误。
type error interface {
	Error() string
}
